home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 1 / PC Actual CD 01.iso / f1 / utils1.arj / PROTHD.ASM < prev    next >
Encoding:
Assembly Source File  |  1992-06-16  |  3.8 KB  |  174 lines

  1. ;
  2. ;     ***********************
  3. ;    * PROTHD.COM / JCE 1992 *
  4. ;     ***********************
  5. ;              v.B19
  6. ; --------------------------------
  7. ; Aborta cualquier llamada al BIOS
  8. ; para formatear, borrar o grabar
  9. ; en el disco duro.
  10. ; --------------------------------
  11.  
  12. CODE    SEGMENT
  13.         ASSUME  CS:CODE, DS:CODE
  14.  
  15. psp17   EQU     CS:80H
  16. entrada EQU     CS:82H
  17.  
  18.         ORG 100h
  19.  
  20.         EXTRN   PR9BIOS:NEAR
  21.  
  22. PROTHD:
  23.         JMP     PROTHD_RUN
  24.  
  25. dato    DB      0
  26.  
  27. ;
  28. ; Arranque: QUEDA RESIDENTE
  29. ; -------------------------
  30.  
  31. PROTHD_RUN:
  32.  
  33.         MOV     AL,BYTE PTR [psp17]
  34.         CMP     AL,2
  35.         JNE     error
  36.  
  37.         MOV     AL,BYTE PTR [entrada]
  38.         MOV     [dato],AL
  39.  
  40.         MOV     DX,OFFSET MSG0
  41.         CALL    PR9BIOS
  42.  
  43.         XOR     AX,AX
  44.         MOV     ES,AX
  45.  
  46.         MOV     AL,BYTE PTR [dato]
  47.         SUB     AL,48
  48.         CMP     AL,1
  49.         JZ      RESID
  50.  
  51.         CMP     AL,0
  52.         JNZ     error
  53.  
  54.         MOV     DX,OFFSET MSG00
  55.         CALL    PR9BIOS
  56.         CLI
  57.         MOV     WORD PTR ES:[4CH],2EB0H
  58.         MOV     WORD PTR ES:[4EH],0070H
  59.         STI
  60.         JMP     RETDOS
  61.  
  62. error:
  63.         MOV     DX,OFFSET MSG3
  64.         CALL    PR9BIOS
  65.         JMP     RETDOS
  66.  
  67. RESID:
  68.         MOV     AX,WORD PTR ES:[4cH]
  69.         CMP     AX,OFFSET PROG
  70.         JZ      RETDOS0                  ; Comprueba si residente
  71.  
  72. ;
  73. ; Parcheo INT 13H (rutinas BIOS para contr. disco)
  74. ; ------------------------------------------------
  75.         CLI
  76.         MOV     AX,WORD PTR ES:[4cH]
  77.         MOV     WORD PTR CS:[OLD13H],AX
  78.         MOV     AX,WORD PTR ES:[4eH]
  79.         MOV     WORD PTR DS:[OLD13H+2],AX
  80.         MOV     WORD PTR ES:[4cH],OFFSET PROG
  81.         MOV     WORD PTR ES:[4eH],CS
  82.         STI
  83.  
  84.         MOV     DX,OFFSET MSG01
  85.         CALL    PR9BIOS
  86.  
  87.         MOV     AX,3100H
  88.         MOV     DX,100                   ; bytes/16 reservados
  89.         INT     21H                      ; Residente
  90.  
  91. RETDOS:
  92.         INT     20H                     ; Vuelve al DOS
  93.  
  94. retdos0:
  95.         MOV     DX,OFFSET MSG1
  96.         CALL    PR9BIOS
  97.         JMP     RETDOS
  98.  
  99. ; -------------------------------------
  100. ;  No permite escribir ni modificar HD
  101. ; -------------------------------------
  102.  
  103. PROG:
  104.         JMP     PROG2
  105.  
  106.  
  107. OLD13H  DD      0
  108.  
  109.  
  110. PROG2:
  111.         PUSHF
  112.         PUSH    AX
  113.         PUSH    DX
  114.  
  115.         PUSH    AX
  116.  
  117.         MOV     AH,25
  118.         INT     21H                     ; averigua drive activo
  119.  
  120.         CMP     AL,0
  121.         JZ      retorna0
  122.         CMP     AL,1
  123.         JZ      retorna0
  124.  
  125.         POP     AX
  126.  
  127.         CMP     AH,3
  128.         JZ      OK                      ; escritura
  129.  
  130.         CMP     AH,5
  131.         JZ      OK                      ; formateo
  132.  
  133.         CMP     AH,10
  134.         JZ      OK                      ; escritura
  135.  
  136.         CMP     AH,11
  137.         JZ      OK                      ; escritura
  138.         JMP     retorna
  139.  
  140. ok:
  141.         MOV     DX,offset MSG2
  142.         CALL    PR9BIOS
  143.  
  144.         POP     DX
  145.         POP     AX
  146.         POPF
  147.         MOV     AX,4CH                  ; vuelve
  148.         INT     21H
  149.  
  150. retorna0:
  151.         POP     AX                      ; desprecia dato pila
  152. retorna:
  153.         POP     DX
  154.         POP     AX
  155.         POPF
  156.         JMP     CS:[OLD13H]             ; ejecuta BIOS
  157.  
  158. ;
  159. ;  Textos
  160. ;  ------
  161.  
  162. MSG0    DB      10,13,"* PROTHD.COM (v.B13)/ JCE May 1992 *",10,13,"$"
  163. MSG01   DB      "Ok. PROTHD activado!",10,13,"$"
  164. MSG00   DB      "Ok. PROTHD desactivado!",10,13,"$"
  165. MSG1    DB      "PROTHD ya era residente!",10,13,"$"
  166.  
  167. MSG2    DB      7,"* PROTHD: Se ha intentado modificar o formatear el HD! *",10,13,"$"
  168.  
  169. MSG3    DB      "Formato: PROTHD 1 ..... ACTIVAR PROTECCION",10,13
  170.         DB      "         PROTHD 0 ..... DESACTIVAR PROTECCION",10,13,"$"
  171.  
  172. CODE            ENDS
  173.                 END     PROTHD
  174.